import { http } from "@/utils/http";

// 客户基本信息接口
export interface CustomerItem {
  id: number;
  name: string;
  phone: string;
  email: string;
  address: string;
  remark: string;
  tenantId: number;
  gender: number; // 性别：0代表男，1代表女
  intention: number; // 租赁意向：0车位，1广告费，2房屋
  status: number; // 客户状态：0潜在客户,1意向客户,2签约客户
  admin_id: string; // 录入人ID
  create_time?: string; // 创建时间
}

// 查询客户列表参数
export interface CustomerListParams {
  page: number;
  limit: number;
  query: string;
}

// 通用响应接口
export interface ApiResponse<T = any> {
  code: number;
  data?: T;
  message: string;
}

// 查询客户列表返回结果
export interface CustomerListResult {
  code: number;
  data?: {
    list?: CustomerItem[];
    total?: number;
  };
  message: string;
}

// 添加客户参数
export interface CustomerAddPayload {
  name: string;
  phone: string;
  email: string;
  address: string;
  remark: string;
  tenantId: number;
  gender: number; // 性别：0代表男，1代表女
  intention: number; // 租赁意向：0车位，1广告费，2房屋
  status: number; // 客户状态：0潜在客户,1意向客户,2签约客户
  admin_id: string; // 录入人ID
}

// 修改客户参数
export interface CustomerUpdatePayload {
  id: number;
  name: string;
  phone: string;
  email: string;
  address: string;
  remark: string;
  tenantId: number;
  gender: number; // 性别：0代表男，1代表女
  intention: number; // 租赁意向：0车位，1广告费，2房屋
  status: number; // 客户状态：0潜在客户,1意向客户,2签约客户
  admin_id: string; // 录入人ID
}

/**
 * 查询客户列表
 * @param data 查询参数
 * @returns 客户列表数据
 */
export const getCustomerList = (data: CustomerListParams) => {
  return http.request<ApiResponse>("post", "/customer/list", {
    data
  });
};

/**
 * 添加客户信息
 * @param data 客户信息
 * @returns 创建结果
 */
export const addCustomer = (data: CustomerAddPayload) => {
  return http.request<ApiResponse>("post", "/customer/add", {
    data
  });
};

/**
 * 修改客户信息
 * @param data 客户信息（包含id）
 * @returns 修改结果
 */
export const updateCustomer = (data: CustomerUpdatePayload) => {
  return http.request<ApiResponse>("post", "/customer/update", {
    data
  });
};

/**
 * 根据id查询客户信息
 * @param id 客户ID
 * @returns 客户详细信息
 */
export const getCustomerById = (id: number) => {
  return http.request<ApiResponse>("get", `/customer/find?id=${id}`);
};

/**
 * 删除客户信息
 * @param id 客户ID
 * @returns 删除结果
 */
export const deleteCustomer = (id: number) => {
  return http.request<ApiResponse>("get", `/customer/delete?id=${id}`);
};

/**
 * 批量删除客户信息
 * @param ids 客户ID数组
 * @returns 删除结果
 */
export const deleteCustomerBatch = (ids: number[]) => {
  return http.request<ApiResponse>("post", "/customer/deleteBatch", {
    data: { ids }
  });
};

/**
 * 查询所有客户信息
 * @returns 所有客户信息
 */
export const getAllCustomers = () => {
  return http.request<ApiResponse>("get", "/customer/findAll");
};